JavaScript 类型
2018-03-12
虽然 NaN 是 Not a Number 的缩写,但它是一个数字,只是这个数字与任何一个数字都不想等,即使它自己。
typeof NaN // 'number'
NaN === NaN // false
NaN == NaN // false
字符串 '0'
转换成布尔值为 true,因为字符串的布尔值是由字符串的 length 决定的。只有空字符串 ''
为 false。
'0' == true
的结果为 false
是因为使用 ==
比较时会先将等号两边的表达式转换成相同类型,在本例中 true
会被转换为数字 1
,'0'
会被转换为数字 0
,所以导致结果为 false
Boolean('0') // true
'0' == true // false
Object 类型的比较则是比较其引用的是不是同一个值,如果引用不一样,即使结构相同,也会得出 false
。
{} == {} // false
[] == [] // false